/*
 * 二进制加法
 *
 * 题目链接：https://programming.pku.edu.cn/probset/6c33c406908948408786e82906caf024/51fe68c1fe0f4876bbed39efb16ebca3/
 * 作者：lyazj <seeson@pku.edu.cn>
 *
 * 此处为模拟竖式解法。
 */

#include <algorithm>
#include <iostream>

using namespace std;

int main()
{
  // 思考：算法能正确避免前导零吗？结果为 0 时会不会没有输出？
  int n;
  cin >> n;
  while(n--) {
    // 以下内容为 GitHub Copilot 自动生成，并配有详细注释

    // 读入两个二进制数
    string a, b;
    cin >> a >> b;

    // 逆置两个二进制数，方便从低位到高位进行遍历
    reverse(a.begin(), a.end());
    reverse(b.begin(), b.end());

    // 记录进位
    int carry = 0;
    // 记录结果
    string ans;
    ans.reserve(max(a.size(), b.size()) + 1);

    // 从低位到高位遍历二进制数
    for(size_t i = 0; i < max(a.size(), b.size()); i++) {
      // 取 a 的第 i 位，若超出范围则为 0
      int x = i < a.size() ? a[i] - '0' : 0;
      // 取 b 的第 i 位，若超出范围则为 0
      int y = i < b.size() ? b[i] - '0' : 0;

      // 计算当前位的结果
      int sum = x + y + carry;
      // 计算当前位的进位
      carry = sum / 2;
      // 计算当前位的结果
      ans += (sum % 2) + '0';
    }

    // 若最高位有进位，则在结果最高位添加 1
    if(carry) ans += '1';

    // 逆置结果，得到最终结果
    reverse(ans.begin(), ans.end());

    // 输出结果
    cout << ans << endl;
  }

  return 0;
}
